package homework_2020_03_15;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;

/**383. 赎金信
 * 给定一个赎金信 (ransom) 字符串和一个杂志(magazine)字符串，判断第一个字符串ransom能不能由第二个字符串magazines里面的字符构成。如果可以构成，返回 true ；否则返回 false。
 *
 * (题目说明：为了不暴露赎金信字迹，要从杂志上搜索各个需要的字母，组成单词来表达意思。)
 *
 * 注意：
 *
 * 你可以假设两个字符串均只含有小写字母。
 *
 * canConstruct("a", "b") -> false
 * canConstruct("aa", "ab") -> false
 * canConstruct("aa", "aab") -> true
 */
public class leetcode_383 {
    public static void main(String[] args) {
        Solution_383 s = new Solution_383();
        String ransomNote = "a";
        String magazine = "b";
        System.out.println(s.canConstruct(ransomNote,magazine));
    }
}
class Solution_383 {
    public boolean canConstruct(String ransomNote, String magazine) {
        char[] chars = magazine.toCharArray();
        List<Character> magazineList = new ArrayList<Character>();
        for(char c:chars){
            magazineList.add(c);
        }
        for(int i=0;i<ransomNote.length();i++){
            if(magazineList.indexOf(ransomNote.charAt(i))<0){
                return false;
            }else {
                magazineList.remove((Object)ransomNote.charAt(i));
            }
        }
        return true;

    }
}
